In many computing systems, low level instruction code is used as an intermediary between the hardware components of the computing system and the operating software and other high level software executing on the computing system. In some computing systems, this firmware is known as the Basic Input/Output System (“BIOS”). The BIOS provides a set of software routines that allow high level software to interact with the hardware components of the computing system using standard calls.
Because of limitations of the BIOS utilized in many PC-compatible computers, a new specification for the firmware that is responsible for booting the computer and for intermediating the communication between the operating system and the hardware has been proposed. The new specification is called the Extensible Firmware Interface (“EFI”) specification and is available from INTEL CORPORATION.
Both types of firmware perform important functions in the operation of computing systems. In particular, the firmware includes routines for performing the Power-On Self Test (“POST”), which executes automatically each time the computing system is powered on. During the POST, the firmware tests various system components such as the system main memory, the disk drives, and the keyboard to determine whether they are properly connected and operating before the firmware begins the actual boot of the system.
One deficiency of current computing systems is the large amount of time the computing systems take to initialize or boot once powered on. Many users view this delay in gaining access to the computing system as an annoyance. One cause of this delay is the amount of time the firmware takes to execute the POST routines. The firmware of most computing systems is stored in read-only memory (“ROM”) or flash memory so that the firmware is maintained in the memory when the computing system is powered off and can be executed when the computing system is powered on. When the computing system is powered on, the POST routines of the firmware are executed from the ROM or flash memory. However, the access time for such storage devices is slow in comparison to the speed at which a system processor can execute instructions stored thereon. After the main memory of the computing system is initialized, the firmware may be copied to the main memory, which generally has a faster access time in comparison to ROM or flash memory. In conventional computing systems, the firmware executes from the slower ROM or flash memory until the faster system main memory is initialized. Therefore, there is a need to reduce the execution time of the firmware before the firmware is copied to and executed from the system main memory.